package com.doit.day06

/**
 * 特质：给一个类赋予更加丰富的功能
 * 在scala的特质中可以定义抽象属性，具体属性，抽象方法，具体方法
 *
 * 在scala中，是单继承，多实现  继承用extends
 * 而实现，如果没有继承，直接就是实现，那么第一个也是extends  后面的都是with
 * 如果有继承，那么extends就被继承用掉了，所以后面所有的特质都用的with
 *
 * scala 中 可以给一个对象单独的进行动态的混入，给某一个对象赋予更加丰富的功能
 */
object _08_特质 {
  def main(args: Array[String]): Unit = {
/*    val dog: Dog1 = new Dog1()
    dog.eat()
    dog.DeepSleep()
    dog.sleep()*/


    //特质的动态混入
 /*   val xiaoTianDog: Dog1 with Fly = new Dog1() with Fly {
      override def fly(): Unit = println("我跟着二哥，吃香的喝辣的")
    }*/

//    xiaoTianDog.fly()


  }
}




trait Eat{

  val id:Int
  var name:String = "zss"

  def eat()

  def sleep()={
    println("我可以睡")
  }
}


trait Sleep{
  def DeepSleep()
}

trait Fly{
  def fly()
}

/*class Dog1() extends Fu(1,"zss") with Eat with Sleep{
  override val id: Int = 1

  override def eat(): Unit =println("chi")

  override def DeepSleep(): Unit = println("深度睡眠")
}*/
